#ifndef SHADOWRAY_H_
#define SHADOWRAY_H_

#include "Vector.h"
#include "Point.h"

class ShadowRay
{
public:
	ShadowRay(const SPoint& s, const SPoint& e);
	~ShadowRay();
	
	inline const Vector& getVector(void) const { return vec; }
	inline const Vector& getInverseVector(void) const { return invVec; }
	inline const SPoint& getStart(void) const { return start; }
	inline const SPoint& getEnd(void) const { return end; }
	inline float getLength(void) const { return length; }
protected:
	const Vector vec;
	const Vector invVec;
	const float length;
	const SPoint start;
	const SPoint end;
private:
	ShadowRay(const ShadowRay& copy) : vec(copy.vec), invVec(copy.invVec), length(copy.length), start(copy.start), end(copy.end) {}
};

#endif /*SHADOWRAY_H_*/
